MPEG transport streams contain one or more packetized elementary streams (PES) containing distinct (elementary) streams of video, audio, and data. Each such elementary stream is associated with a packet identifier (PID). The PIDs for the streams making up a particular program are defined in a program map table (PMT).
In digital television, typically one program (i.e., video, audio and data streams referenced by a single PMT) is active and displayed at any time.
Various techniques exist for targeting specific programs, including advertisements, to specific viewers based on information associated with the viewer's customer premises equipment (CPE) devices by splicing or otherwise identifying which streams to present to a viewer at a given time. The information used to make such targeting decisions represent the viewer's preferences in some way, for example by indicating a predefined segment the viewer belongs to or by other data indicative of viewer likes and dislikes. Targeting information can originate on the CPE device in response to viewer interaction with the device, or it can originate in the centralized headend location based on external information about the viewer. CPE devices include set-top boxes or integrated digital tuners attached to televisions, cell phones, PDAs, personal computers, and any other devices capable of decoding MPEG or other content streams and rendering the video, audio, and data contained therein.
Server-based targeting techniques perform dynamic splicing of multiple input MPEG transport streams into a single output program stream. This mechanism is defined by SCTE-30, the Digital Program Insertion Splicing API standard; SCTE-35, the Digital Program Insertion Cueing Message standard; and SCTE-130, the Addressable Advertising standard. However, server-based targeting techniques may have limitations. For example, every targeted viewer requires a distinct stream from the headend system. Scaling to a large number of viewers requires a large capital investment if every targeted viewer requires a separate stream. Also, viewer targeting information is required at the headend, possibly raising privacy concerns if the viewer information is gathered from CPE devices.
Client-based techniques employ an application executing on CPE devices to dynamically switch between simultaneously broadcast program streams based on viewer targeting information found on the CPE device. However, all program alternatives must be broadcast to all CPE devices, so that each may choose which to display. The broadcast to each CPE device may require, for example, significant bandwidth.
There are multiple mechanisms to dynamically switch between simultaneously broadcast program streams on CPE devices. One approach is to broadcast program alternatives on distinct channels. The CPE application switches between programs by changing channels (tuning) away from the primary broadcast channel to one of several hidden channels containing alternative program content. However, tuning on digital television CPE devices requires several seconds, providing a non-seamless transition, and requiring alternative programs to be shortened in some way.
A second approach is to multiplex the primary broadcast program stream and multiple alternate program streams within a single MPEG transport stream on a single channel. The CPE application switches between programs by selecting different PIDs to be displayed, providing a seamless transition. However, the extra bandwidth required within these channel transport streams may make the approach difficult or expensive to implement.
Both client-based mechanisms may also have other weaknesses. For example, program switching schedules and information must be transmitted to the CPE device from the headend and synchronized for all channels using the mechanism. Program switching schedules may also occupy scarce memory resources on legacy CPE devices. The switching application executing on the CPE device must be executing at all times to perform switches that may be scheduled for any time. The constant execution wastes CPU resources and slows other applications on legacy CPE devices. Late modification and updating of switching schedules on CPE devices may be difficult to implement. Finally, implementing the switching application as a native application or as part of a middleware application (e.g., EBT User Agent) requires a software update on all CPE devices to modify or fix the application, which may be difficult to execute.